package com.ruoyi.system.mapper;

import com.ruoyi.system.domain.ArchiveTypeInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 档案类型基础信息Mapper接口
 *
 * @author admin
 * @date 2025-08-23
 */
@Mapper
public interface ArchiveTypeInfoMapper {
    /**
     * 查询档案类型基础信息
     *
     * @param id 档案类型基础信息主键
     * @return 档案类型基础信息
     */
    public ArchiveTypeInfo selectArchiveTypeInfoById(Long id);

    /**
     * 查询档案类型基础信息列表
     *
     * @param archiveTypeInfo 档案类型基础信息（用于传递查询条件）
     * @return 档案类型基础信息集合
     */
    public List<ArchiveTypeInfo> selectArchiveTypeInfoList(ArchiveTypeInfo archiveTypeInfo);

    /**
     * 新增档案类型基础信息
     *
     * @param archiveTypeInfo 档案类型基础信息
     * @return 结果（影响行数）
     */
    public int insertArchiveTypeInfo(ArchiveTypeInfo archiveTypeInfo);

    /**
     * 按名称查询档案类型列表（返回Map格式，适配自定义统计/展示场景）
     *
     * @param archiveTypeInfo 档案类型基础信息（至少传递名称相关查询条件）
     * @return 结果集合（Key为数据库字段名，Value为字段值）
     */
    public List<Map<String, Object>> selectListByName(ArchiveTypeInfo archiveTypeInfo);

    /**
     * 修改档案类型基础信息
     *
     * @param archiveTypeInfo 档案类型基础信息
     * @return 结果（影响行数）
     */
    public int updateArchiveTypeInfo(ArchiveTypeInfo archiveTypeInfo);

    /**
     * 删除档案类型基础信息
     *
     * @param id 档案类型基础信息主键
     * @return 结果（影响行数）
     */
    public int deleteArchiveTypeInfoById(Long id);

    /**
     * 批量删除档案类型基础信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果（影响行数）
     */
    public int deleteArchiveTypeInfoByIds(Long[] ids);

    /**
     * 批量插入档案类型信息
     * @param list 档案类型信息列表
     * @return 插入成功的记录数
     */
    int batchInsert(@Param("list") List<ArchiveTypeInfo> list);

    /**
     * 批量删除档案类型基础信息
     *
     * @return 结果（影响行数）
     */
    public int deleteAll();
}